import { arraySidebar } from "vuepress-theme-hope";
import { buildSimpleNavObj, FOLDER_ICON } from "./util";

export default arraySidebar([
  {
    text: "踏入山门",
    prefix: "踏入山门/",
    collapsible: true,
    icon: FOLDER_ICON,
    children: [
      buildSimpleNavObj("Java语言概述"),
      buildSimpleNavObj("理解面向对象"),
      buildSimpleNavObj("标识符、关键字、直接量"),
      buildSimpleNavObj("数据类型"),
      buildSimpleNavObj("包装类"),
      buildSimpleNavObj("运算符"),
      buildSimpleNavObj("Java注释"),
      buildSimpleNavObj("流程控制"),
      buildSimpleNavObj("数组"),
      buildSimpleNavObj("classpath和jar"),
      buildSimpleNavObj("异常"),
      buildSimpleNavObj("注解"),
    ],
  },
  {
    text: "面向对象",
    prefix: "面向对象/",
    collapsible: true,
    icon: FOLDER_ICON,
    children: [
      buildSimpleNavObj("类与对象"),
      buildSimpleNavObj("类的继承"),
      buildSimpleNavObj("类的组合"),
      buildSimpleNavObj("初始化块"),
      buildSimpleNavObj("多态"),
      buildSimpleNavObj("final关键字"),
      buildSimpleNavObj("包"),
      buildSimpleNavObj("对象与垃圾回收"),
      buildSimpleNavObj("抽象类"),
      buildSimpleNavObj("接口"),
      buildSimpleNavObj("内部类"),
      buildSimpleNavObj("枚举类"),
      buildSimpleNavObj("函数式接口"),
      buildSimpleNavObj("Lambda表达式"),
      buildSimpleNavObj("一些Java常用接口"),
      buildSimpleNavObj("泛型"),
    ],
  },
  {
    text: "类加载机制及反射",
    prefix: "类加载机制及反射/",
    collapsible: true,
    icon: FOLDER_ICON,
    children: [
      buildSimpleNavObj("类的加载、连接、初始化"),
      buildSimpleNavObj("类加载器"),
      buildSimpleNavObj("反射"),
      buildSimpleNavObj("代理"),
    ],
  },
  {
    text: "基础类库",
    prefix: "基础类库/",
    collapsible: true,
    icon: FOLDER_ICON,
    children: [
      buildSimpleNavObj("Scanner类"),
      buildSimpleNavObj("Console类"),
      buildSimpleNavObj("System类"),
      buildSimpleNavObj("Runtime类"),
      buildSimpleNavObj("Object类"),
      buildSimpleNavObj("Objects类"),
      buildSimpleNavObj("Math类"),
      buildSimpleNavObj("Random、ThreadLocalRandom类"),
      buildSimpleNavObj("String、StringBuilder、StringBuffer类"),
      buildSimpleNavObj("BigDecimal类"),
      buildSimpleNavObj("Optional类"),
      buildSimpleNavObj("日期与时间"),
      buildSimpleNavObj("正则表达式"),
      buildSimpleNavObj("PropertyEditor类"),
      buildSimpleNavObj("Proxy类"),
    ],
  },
  {
    text: "集合与流",
    prefix: "集合与流/",
    collapsible: true,
    icon: FOLDER_ICON,
    children: [
      buildSimpleNavObj("Java集合概述"),
      buildSimpleNavObj("List"),
      buildSimpleNavObj("Queue"),
      buildSimpleNavObj("Set"),
      buildSimpleNavObj("Map"),
      buildSimpleNavObj("视图与包装器"),
      buildSimpleNavObj("算法"),
      buildSimpleNavObj("流"),
    ],
  },
  {
    text: "IO",
    prefix: "IO/",
    collapsible: true,
    icon: FOLDER_ICON,
    children: [
      buildSimpleNavObj("JavaIO流设计模型"),
      buildSimpleNavObj("JavaIO工作的机制"),
      buildSimpleNavObj("File类"),
      buildSimpleNavObj("RandomAccessFile类"),
      buildSimpleNavObj("NIO"),
      buildSimpleNavObj("IO调优"),
      buildSimpleNavObj("对象序列化"),
      buildSimpleNavObj("读取properties配置文件"),
    ],
  },
  {
    text: "多线程",
    prefix: "多线程/",
    collapsible: true,
    icon: FOLDER_ICON,
    children: [
      buildSimpleNavObj("多线程概述"),
      buildSimpleNavObj("线程创建及启动"),
      buildSimpleNavObj("线程的生命周期"),
      buildSimpleNavObj("线程属性"),
      buildSimpleNavObj("线程同步"),
      buildSimpleNavObj("线程安全的集合"),
      buildSimpleNavObj("线程池"),
      buildSimpleNavObj("异步计算"),
      buildSimpleNavObj("线程组"),
      buildSimpleNavObj("进程"),
    ],
  },
  {
    text: "网络编程",
    prefix: "网络编程/",
    collapsible: true,
    icon: FOLDER_ICON,
    children: [
      buildSimpleNavObj("基础知识"),
      buildSimpleNavObj("InetAddress"),
      buildSimpleNavObj("URLDecoder、URLEncoder"),
      buildSimpleNavObj("URL、URLConnection"),
      buildSimpleNavObj("TCP编程"),
      buildSimpleNavObj("UDP编程"),
      buildSimpleNavObj("Proxy、ProxySelector"),
    ],
  },
  {
    text: "图形用户界面",
    prefix: "图形用户界面/",
    collapsible: true,
    icon: FOLDER_ICON,
    children: [
      buildSimpleNavObj("Applet"),
      buildSimpleNavObj("绘图"),
      buildSimpleNavObj("Swing基础"),
      buildSimpleNavObj("Swing事件"),
      buildSimpleNavObj("Swing组件详解"),
      buildSimpleNavObj("其他Swing特性"),
      buildSimpleNavObj("桌面API"),
    ],
  },
  {
    text: "设计模式",
    prefix: "设计模式/",
    collapsible: true,
    icon: FOLDER_ICON,
    children: [
      {
        text: "创建型模式",
        prefix: "创建型模式/",
        collapsible: true,
        icon: FOLDER_ICON,
        children: [
          buildSimpleNavObj("工厂模式"),
          buildSimpleNavObj("抽象工厂模式"),
          buildSimpleNavObj("单例模式"),
          buildSimpleNavObj("建造者模式"),
          buildSimpleNavObj("原型模式"),
        ],
      },
      {
        text: "结构型模式",
        prefix: "结构型模式/",
        collapsible: true,
        icon: FOLDER_ICON,
        children: [
          buildSimpleNavObj("适配器模式"),
          buildSimpleNavObj("装饰器模式"),
          buildSimpleNavObj("代理模式"),
          buildSimpleNavObj("外观模式"),
          buildSimpleNavObj("桥接模式"),
          buildSimpleNavObj("组合模式"),
          buildSimpleNavObj("享元模式"),
        ],
      },
      {
        text: "行为型模式",
        prefix: "行为型模式/",
        collapsible: true,
        icon: FOLDER_ICON,
        children: [
          buildSimpleNavObj("策略模式"),
          buildSimpleNavObj("模板模式"),
          buildSimpleNavObj("观察者模式"),
          buildSimpleNavObj("迭代器模式"),
          buildSimpleNavObj("责任链模式"),
          buildSimpleNavObj("命令模式"),
          buildSimpleNavObj("备忘录模式"),
          buildSimpleNavObj("状态模式"),
          buildSimpleNavObj("访问者模式"),
          buildSimpleNavObj("中介者模式"),
          buildSimpleNavObj("解释器模式"),
        ],
      },
    ],
  },
  {
    text: "第三方工具",
    prefix: "第三方工具/",
    collapsible: true,
    icon: FOLDER_ICON,
    children: [
      buildSimpleNavObj("lombok"),
      buildSimpleNavObj("Junit测试"),
      buildSimpleNavObj("Json"),
      {
        text: "Guava",
        prefix: "Guava/",
        collapsible: true,
        icon: FOLDER_ICON,
        children: [
          buildSimpleNavObj("Cache"),
          buildSimpleNavObj("EventBus"),
        ],
      },
    ],
  },
  {
    text: "Java开发工具",
    prefix: "Java开发工具/",
    collapsible: true,
    icon: FOLDER_ICON,
    children: [buildSimpleNavObj("Maven"), buildSimpleNavObj("IDEA")],
  },
]);
